package cn.yuanqiao.manage.service.impl;

import cn.yuanqiao.common.core.domain.entity.SysUser;
import cn.yuanqiao.common.utils.DateUtils;
import cn.yuanqiao.common.utils.SecurityUtils;
import cn.yuanqiao.manage.domain.ManageUser;
import cn.yuanqiao.manage.mapper.ManageUserMapper;
import cn.yuanqiao.manage.service.IManageUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 管理员信息Service业务层处理
 *
 * @author yuanqiao
 * @date 2023-06-06
 */
@Service
public class ManageUserServiceImpl implements IManageUserService
{
    @Autowired
    private ManageUserMapper manageUserMapper;
    @Value("${encryption}")
    private String encryption;

    /**
     * 查询管理员信息
     *
     * @param ID 管理员信息主键
     * @return 管理员信息
     */
    @Override
    public ManageUser selectManageUserByID(String ID)
    {
        return manageUserMapper.selectManageUserByID(ID);
    }
    @Override
    public ManageUser selectUserByLoginName(String loginName)
    {
        return manageUserMapper.selectUserByLoginName(loginName);
    }

    @Override
    public int resetUserPwd(String userName, String password) {
        return manageUserMapper.resetUserPwd(userName, password);

    }

    /**
     * 查询管理员信息列表
     *
     * @param manageUser 管理员信息
     * @return 管理员信息
     */
    @Override
    public List<ManageUser> selectManageUserList(ManageUser manageUser)
    {
        return manageUserMapper.selectManageUserList(manageUser);
    }

    /**
     * 新增管理员信息
     *
     * @param manageUser 管理员信息
     * @return 结果
     */
    @Override
    public int insertManageUser(ManageUser manageUser)
    {
        manageUser.setCreateTime(DateUtils.getNowDate());
        manageUser.setCreateBy(SecurityUtils.getUsername());
        manageUser.setPassWord(SecurityUtils.encryptPassword(manageUser.getPassWord(),encryption));
        return manageUserMapper.insertManageUser(manageUser);
    }

    /**
     * 修改管理员信息
     *
     * @param manageUser 管理员信息
     * @return 结果
     */
    @Override
    public int updateManageUser(ManageUser manageUser)
    {
        manageUser.setUpdateTime(DateUtils.getNowDate());
        manageUser.setUpdateBy(SecurityUtils.getUsername());
        String ps = manageUserMapper.getPassWordById(manageUser.getId());
        if(!ps.equals(manageUser.getPassWord())) manageUser.setPassWord(SecurityUtils.encryptPassword(manageUser.getPassWord(),encryption));
        return manageUserMapper.updateManageUser(manageUser);
    }

    /**
     * 批量删除管理员信息
     *
     * @param IDs 需要删除的管理员信息主键
     * @return 结果
     */
    @Override
    public int deleteManageUserByIDs(String[] IDs)
    {
        return manageUserMapper.deleteManageUserByIDs(IDs);
    }

    /**
     * 删除管理员信息信息
     *
     * @param ID 管理员信息主键
     * @return 结果
     */
    @Override
    public int deleteManageUserByID(String ID)
    {
        return manageUserMapper.deleteManageUserByID(ID);
    }

}
